import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
import {VitePWA} from "vite-plugin-pwa";

// https://vite.dev/config/
export default defineConfig({
  build: {

    rollupOptions: {
      output: {
        entryFileNames: `assets/[name].[hash].js`,
        chunkFileNames: `assets/[name].[hash].js`,
        assetFileNames: `assets/[name].[hash].[ext]`,

      }
    },
  },
  plugins: [
    vue(),
    // vueDevTools(),
    VitePWA({
      // 详细配置项将在这里展开
      registerType: 'autoUpdate',
      includeAssets: ['favicon.ico', 'tiantian.png'],
      manifest: {                        // PWA 应用清单
        name: '天天开心',          // 应用全名
        short_name: '天天开心',        // 短名称（空间不足时显示）
        description: '天天开心', // 应用描述
        theme_color: '#ffffff',          // 主题色
        icons: [                         // 应用图标（多种尺寸）
          {
            src: 'tiantian.png',      // 图标路径（建议放在 public 目录）
            sizes: '192x192',
            type: 'image/png'
          },
          {
            src: 'tiantian.png',
            sizes: '512x512',
            type: 'image/png'
          }
        ],
        start_url: "/",                // 应用启动时的URL
        display: "standalone",           // 显示模式：standalone (类似独立应用)，fullscreen, minimal-ui, browser
        background_color: "#ffffff",     // 启动前的背景色（通常与splash screen相关）
      },
      workbox: {                         // Workbox 缓存策略配置
        skipWaiting: true, // 新 SW 立即接管
        clientsClaim: true, // 立即控制所有客户端
        cleanupOutdatedCaches: true, // 清理旧缓存
        // 提高缓存文件大小限制，根据项目实际情况调整:cite[6]
        maximumFileSizeToCacheInBytes: 20 * 1024 * 1024, // 例如设置为4MB
        globPatterns: ['**/*.{js,css,html,ico,png,jpg,jpeg,svg}'] // 缓存这些文件类型的静态资源
      },
      devOptions: {
        enabled: true,                  // 开发环境下也启用 PWA，方便测试
        type: 'module' // 如果你在开发模式下使用，可能需要这个选项
      }
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },

  server: {
    proxy: {
      '/dh': {
        target: 'http://localhost:8800', //接口域名,端口看各自设置的
        changeOrigin: true,             //是否跨域
        ws: false,                       //是否代理 websockets
        secure: false,                   //是否https接口
        rewrite: (path) => path.replace(/^\/dh/, '')
      }
    }
  }
})
